100 REM A MAZING GRACE 110 REM BY GEORGE TREPAL 120 : 130 POKE 56,23:POKE 55,215:POKE 650,128 140 DN$="": PF=0:REM PRINTER FLAG 144 PRINT"[147]DO YOU HAVE A PRINTER ?"; 145 POKE198,0:WAIT198,1:GETK$: IFK$<>"Y"ANDK$<>"N"THEN147 146 PRINTK$ 148 IFK$="Y"THENPF=1 149 : 150 GOSUB1000 160 POKE53281,0 :POKE53280,11: PRINT"[147]" 170 DIREC(0)=2:DIREC(1)=-80:DIREC(2)=-2:DIREC(3)=80 180 WALL=160:POKE 2,WALL: PATH=32 190 J=RND(-TI) 200 GOSUB360 210 REM DRAW MAZE 220 SP$ = "[159]++++++++++++++++++++++++++++++++++++++++" 230 PRINT"[147]";: FOR J=1 TO 26: PRINT SP$;: NEXT 240 PRINTDN$;" [153]>>>>>>>>>>>> [158]DRAWING MAZE [153]<<<<<<<<<<<<"; 250 NOW=INT(RND(1)*4):CURRENT=NOW 260 LOOK = HEREIAM + DIREC(NOW) 270 IF PEEK(LOOK)=WALL THEN330 280 NOW=(NOW+1): IF NOW>3 THEN NOW=0 290 IF NOW<>CURRENT THEN260 300 NOW=PEEK(HEREIAM):POKE HEREIAM,PATH:GOSUB930 310 IF NOW<4 THEN HEREIAM=HEREIAM-DIREC(NOW): GOTO250 320 GOTO560 330 POKELOOK,NOW:POKE HEREIAM+DIREC(NOW)/2,PATH: HEREIAM=LOOK:GOSUB930 340 GOTO250 350 REM USER INPUT 360 SA = 6144 370 PRINTSPC(11)"[147] GIANT MAZE PRINTER" 380 PRINTSPC(12)"BY GEORGE TREPAL" 390 INPUT" (ODD) NUMBER OF LINES (0=EXIT)";NL:IFNL=0THEN63000 400 IFNL/2=INT(NL/2) THEN PRINT "ODD NUMBERS ONLY!": GOTO390 410 IF NL>649 THEN PRINT "TOO MANY LINES!": GOTO390 412 IFNL<5ORNL>670THENPRINT"NOT A GOOD SIZED MAZE..":FORDL=1TO1000:NEXT:GOTO390 420 PRINT" APPROXIMATE PRODUCTION TIME IS";INT(NL/15*10)/10;"MIN" 440 PRINT " PRINT <1> NORMAL, <2> DOUBLE OR <3>" 450 INPUT " TRIPLE LENGTH MAZE";FLAG 460 IF FL<1 OR FL>3 THEN440 470 EA = NL * 40 + SA - 1 480 PRINTSPC(10)"CONDITIONING MEMORY" 490 SYS 49227 500 FORJ = SA - 40 TO SA + 39: POKE J,102:NEXT 510 FOR J = EA - 40 TO EA + 40: POKE J,102: NEXT 520 FOR J = SA-1 TO EA STEP 40: POKE J,32: NEXT 530 HEREIAM = SA + 77 540 RETURN 550 REM FINISH WALL 560 FORJ = SA TO SA + 38: POKE J,WALL: NEXT: GOSUB930 570 FOR J = EA - 39 TO EA-1: POKE J,WALL: NEXT: GOSUB930 580 POKE SA+1,32 590 POKE EA-2,32 600 IFPF=1THENPRINTDN$;" U=UP D=DOWN P=PRINT X=EXIT "; 602 IFPF=0THENPRINTDN$;" U=UP D=DOWN X=EXIT "; 603 : 610 GOTO800 620 REM OUTPUT TO PRINTER 630 OPEN4,4: CMD4: F2 = 1 640 REM PRINT MAZE 650 TP = SA:FOR J = 1 TO NL: GOSUB800 660 FOR K = SA TO SA + 38 670 PK = PEEK (K): IF PK = WALL THEN PK = 35 680 M$ = M$ + CHR$(PK) + CHR$(PK) 690 NEXT 700 M$=" " + M$ 710 FOR TM = 1 TO FLAG 720 PRINT#4, M$ 730 NEXT 740 M$ = "": SA = SA +40 750 NEXT 760 PRINT#4, " ": CLOSE 4 770 SA=TP: F2 = 0 780 GET A$:IF A$<>"" THEN780 790 REM SHOW MAZE 800 PS=SA:GOTO860 810 GETA$:IFA$=""THEN810 812 IFA$="X"THEN360 820 IFA$="U"THENPS=PS+40:GOTO860 830 IFA$="D"THENPS=PS-40:GOTO860 840 IFPF=1THENIFA$="P"THEN630 850 GOTO810 860 H=INT(PS/256) 870 L=PS-H*256 875 IFL<0THENL=0 876 IFH<0THENH=0 877 IFL>255THENL=255 878 IFH>255THENH=255 880 POKE251,L: POKE252,H 890 SYS49153 900 IF F2 = 1 THEN RETURN 910 GOTO810 920 REM FILL MEMORY W1TH WALL 930 MP=INT((HEREIAM-SA)/40)*40-440 940 MP=SA + MP 950 HP = INT(MP/256) 960 LP = MP - 256*HP 970 POKE251,LP: POKE252,HP 980 SYS49153:RETURN 990 REM MACHINE LANGUAGE 1000 PRINT "[147]": AD = 49152 1010 READ X: IF X = -1 THEN RETURN 1020 POKE AD,X: AD = AD + 1 1030 GOTO1010 1040 DATA234,234,234,169,0,133,253,169,4,133 1050 DATA254,169,0,141,0,192,160,0,162,0 1060 DATA177,251,145,253,24,165,251,105,1,133 1070 DATA251,165,252,105,0,133,252,24,165,253 1080 DATA105,1,133,253,165,254,105,0,133,254 1090 DATA232,208,223,234,238,0,192,173,0,192 1100 DATA201,4,208,1,96,201,3,208,205,162 1110 DATA64,76,20,192,234,169,0,133,251,169 1120 DATA24,133,252,160,0,165,2,145,251,200 1130 DATA208,251,230,252,165,252,201,126,208,241 1140 DATA96,-1 63000 REM CONNECT TO L.S. 63005 POKE56,160:POKE55,0:POKE650,0 63010 PRINT"[147]LOAD"CHR$(34)"PAYLOAD" CHR$(34)",8":PRINT"RUN" 63020 POKE631,13:POKE632,13:POKE198,2: END